# 语音实时识别
# 第三方库: pyaudio  处理麦克风相关组件
# 导包: import pyaudio
import pyaudio
from vosk import Model, KaldiRecognizer
import json

# 加载模型
model = Model('zh-1')
# 创建麦克风对象
mkf = pyaudio.PyAudio()
# 接收麦克风
audio = mkf.open(
    format=pyaudio.paInt16,  # 16位深度音频数据
    channels=1,  # 声道，单声道
    rate=16000,  # 采样率
    input=True,  # 从麦克风获取数据
    frames_per_buffer=4000  # 每次读取数据块大小
)

# 创建语音识别器
kaldi = KaldiRecognizer(model, 4000)
print('开始实时识别')
while True:
    # 从麦克风读取数据
    data = audio.read(4000)
    # 如果读取到数据
    if kaldi.AcceptWaveform(data):
        # 实时输出识别结果
        result = kaldi.Result()
        result_py = json.loads(result)['text'].replace(' ', '')
        print(result_py)
